if (acpi_table_parse_madt(ACPI_MADT_LAPIC_ADDR_OVR, acpi_parse_lapic_addr_ovr, 0) < 0)
printk(KERN_ERR PREFIX "Error parsing LAPIC address override entry\n");
-#ifdef CONFIG_SMP
- int count;
- if ((count = acpi_table_count_madt(ACPI_MADT_LSAPIC)) < 1) {
- printk(KERN_ERR PREFIX "Error parsing MADT - no LSAPIC entries\n");
- } else {
- acpi_table_parse_madt(ACPI_MADT_LSAPIC, acpi_parse_lsapic, count);
- }
-#else
if (acpi_table_parse_madt(ACPI_MADT_LSAPIC, acpi_parse_lsapic, NR_CPUS) < 1)
printk(KERN_ERR PREFIX "Error parsing MADT - no LSAPIC entries\n");
-#endif
if (acpi_table_parse_madt(ACPI_MADT_LAPIC_NMI, acpi_parse_lapic_nmi, 0) < 0)
printk(KERN_ERR PREFIX "Error parsing LAPIC NMI entry\n");
return 0;
}
-
-int __init
-acpi_table_count_madt_family (
- enum acpi_table_id id,
- unsigned long madt_size,
- int entry_id)
-{
- void *madt = NULL;
- acpi_table_entry_header *entry;
- unsigned int count = 0;
- unsigned long madt_end;
- unsigned int i;
-
- /* Locate the MADT (if exists). There should only be one. */
-
- for (i = 0; i < sdt_count; i++) {
- if (sdt_entry[i].id != id)
- continue;
- madt = (void *)
- __acpi_map_table(sdt_entry[i].pa, sdt_entry[i].size);
- if (!madt) {
- printk(KERN_WARNING PREFIX "Unable to map %s\n",
- acpi_table_signatures[id]);
- return -ENODEV;
- }
- break;
- }
-
- if (!madt) {
- printk(KERN_WARNING PREFIX "%s not present\n",
- acpi_table_signatures[id]);
- return -ENODEV;
- }
-
- madt_end = (unsigned long) madt + sdt_entry[i].size;
-
- /* Parse all entries looking for a match. */
-
- entry = (acpi_table_entry_header *)
- ((unsigned long) madt + madt_size);
-
- while (((unsigned long) entry) + sizeof(acpi_table_entry_header) < madt_end) {
- if (entry->type == entry_id) count++;
-
- entry = (acpi_table_entry_header *)
- ((unsigned long) entry + entry->length);
- }
-
- return count;
-}
-
-
-int __init
-acpi_table_count_madt (enum acpi_madt_entry_id id)
-{
- return acpi_table_count_madt_family(ACPI_APIC, sizeof(struct acpi_table_madt), id);
-}
void acpi_table_print (struct acpi_table_header *header, unsigned long phys_addr);
void acpi_table_print_madt_entry (acpi_table_entry_header *madt);
void acpi_table_print_srat_entry (acpi_table_entry_header *srat);
-int acpi_table_count_madt (enum acpi_madt_entry_id id);
/* the following four functions are architecture-dependent */
void acpi_numa_slit_init (struct acpi_table_slit *slit);